package lkx.demo.test4;

/**
 * 测试运算符的使用1：算术运算符的使用
 *
 *
 * | 运算符       | 说明          | 实例       |
 * | ----------- | ----------- |----------- |
 * | +       | 正号;加 | +1；a = b+1;     |
 * | -       | 负号;减 | -1；a = b-1;     |
 * |*       | 乘 | 5*5    |
 * | /       | 除 |10/2     |
 * | %       | 取模（取余）| 10%2     |
 * | ++       | 自增（前）：先运算后取值；自增（后）：先取值后运算| ++a；a++    |
 * | --      | 自减（前）：先运算后取值；自减（后）：先取值后运算 | --a；a++     |
 *
 * @author kunxianli
 * @date 2024/01/08 15:52
 **/
public class TestArithmetic1 {

    public static void main(String[] args) {
        //    + : 正号
        int a1 = +5;
        //   + : 加
        int a2 = a1+5;
        System.out.println(a2); // 10

        //    - : 负号
        int b1 = -5;
        //   - : 减
        int b2 = b1-5;
        System.out.println(b2); // -10

//        乘
        int c1 = 5;
        int c2 = -5;
        int c3 = c1 * c2;
        System.out.println(c3); // -25

//      除  两个整数相除，默认获取的还是整数，余数会直接舍弃
        int d1 = 11;
        int d2 = 2;
        int d3 = d1 / d2;
        System.out.println(d3); // 5
        System.out.println(d1 / d2 * 2);//10

//        取模 、取余
        int e1 = 11;
        int e2 = 5;
        int e3 = e1 % e2;
        System.out.println(e3); // 1

        int f1 = 12;
        int g1 = 5;
        System.out.println(f1 % g1); //2

        //开发中，经常用来判断某个数num1能整除另外一个数num2。  num1 % num2 == 0
        //比如：判断num1是否是偶数： num1 % 2 == 0

        //结论：取模以后，结果与被模数的符号相同
        int f2 = -12;
        int g2 = 5;
        System.out.println(f2 % g2); //-2

        int f3 = 12;
        int g3 = -5;
        System.out.println(f3 % g3); //2

        int f4 = -12;
        int g4 = -5;
        System.out.println(f4 % g4); //-2

//        ++  --
        int h1 = 10;
        int h2 = h1++;
        System.out.println("h1:"+h1+";h2:"+h2); //h1:11;h2:10
        int h3 = 10;
        int h4 = ++h3;
        System.out.println("h3:"+h3+";h4:"+h4); // h3:11;h4:11


//        特例1 结论：++ 或 -- 运算，不会改变变量的数据类型！
        short i = 10;
//        编译不通过
//        i = i+1;
         i++;
        System.out.println(i);

//        特例2
        byte bb1 = 127;
        bb1++;
        System.out.println("bb1 = " + bb1); // bb1 = -128

        // 特殊1
        int j = 1;
        int j1 = 1;
        System.out.println(j1++ + ++j1 );//4

        // 涉及优先级问题 无论是前++还是后++ 优先级大于 加减乘除，因此需要先算 ，而 乘 优先级大于+
        // 执行顺序 我们假设3个j分别是 j1，j2，j3
        // j2: ++j（2）--> j3: j++(3) --> j1 (4) --> j2*j3(6) --> 6+j1 = 10
        int k = j++ + ++j * j++;
        System.out.println(k); //10

        // 特殊2
        int m = 2;
        m = m++;
        System.out.println(m); //2
    }








}
